package com.sdy.healthcode.biz.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.sdy.common.model.BizException;
import com.sdy.healthcode.biz.dto.PersonInfoVo;
import com.sdy.healthcode.biz.dto.ThisCourtVO;
import com.sdy.healthcode.biz.model.User;
import com.sdy.healthcode.biz.param.PersonnelIdParam;
import com.sdy.healthcode.biz.param.UpdatePersonnelParam;
import com.sdy.mvc.service.BaseService;

import java.util.List;

/**
 * <p>
 * 服务类
 * </p>
 *
 * @author zzq
 * @since 2020-02-18
 */
public interface UserService extends BaseService<User> {
    User getUserByPhone(String phone);

    User getUserByWxid(String wxid);

    void updateUserWxid(Integer userId, String wxid);

    User createUser(String phone, String wxid);

    /**
     * 手机验证码登录获取用户，不存在则创建
     *
     * @param phone 手机号
     */
    User xGetOrCreateUserByPhone(String phone, String wxid);

    User xGetOrCreateUserByWxid(String wxid);

    /**
     * 校验用户扫码权限
     *
     * @param recorderId 扫码者ID
     * @param userId     用户ID
     */
    Boolean checkPriviledgeOfRecord(Integer recorderId, Integer userId);

    /**
     * 更新用户实名信息
     */
    void updateUserInfo(Integer userId, Integer cardType, String cardId, String addr, String addrLocal, String phone, String name);

    /**
     * 修改用户为一线人员
     */
    void updTypeArayof(Integer userId);

    /**
     * 修改用户为普通人员
     */
    void updTypeOrdinary(Integer userId);

    /**
     * 本院人员管理分页
     *
     * @param name
     * @param type
     * @param page
     * @return
     */
    List<ThisCourtVO> getPage(String name, Integer type, Page page);

    /**
     * 分页查询本院人员管理页面
     *
     * @param state
     * @param type
     * @param nameOrPhone
     * @param deptName
     * @return
     */
    IPage<PersonInfoVo> getPersonPageList(Integer state, Integer type, String nameOrPhone, String deptName, Integer current, Integer size);

    /**
     * 本院人员管理size
     *
     * @param name
     * @param type
     * @return
     */
    Integer getPageSize(String name, Integer type);


    void updAuthScan(Integer id, Integer type);


    /**
     * 根据id更新人员基本信息
     *
     * @param param
     * @throws BizException
     */
    void updatePersonnel(UpdatePersonnelParam param) throws BizException;


    /**
     * 根据id删除人员信息数据
     *
     * @param param
     * @throws BizException
     */
    void delPersonnel(PersonnelIdParam param) throws BizException;


    /**
     * 根据id对人员进行禁用/启用操作
     *
     * @param param
     * @throws BizException
     */
    void disablePerson(PersonnelIdParam param) throws BizException;


    /**
     * 根据id对人员进行授权/取消授权操作
     *
     * @param param
     * @throws BizException
     */
    void powerPerson(PersonnelIdParam param) throws BizException;
}
